/******************************************************************
 * Copyright (c) 2007 - 2007, Simon Guerard, All rights reserved.
 * 
 * Projet de jeu de course au large.
 * 
 * This File is part of Sail-Race
 * 
 * Sail-Race is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
 * 
 * Sail-Race is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License along with Sail-Race; if not, write to the Free
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 */
package net.simcafamily.sailrace.core;

import org.springframework.stereotype.Component;

/**
 * @author bs238
 * 
 */
@Component("synchro")
public class Synchronisateur {

	private boolean ouverte;

	/**
	 * @return the ouverte
	 */
	public final boolean isOuverte() {
		return ouverte;
	}

	// fermeture de la barriere
	public synchronized void reset() {
		ouverte = false;
	}

	// ouverture de la barriere
	public synchronized void set() {
		if (!ouverte) {
			ouverte = true;
			notify();
		}
	}

	/**
	 * @param pOuverte
	 *            the ouverte to set
	 */
	public final void setOuverte(final boolean pOuverte) {
		ouverte = pOuverte;
	}

	// attente barriere
	public synchronized void waitOne() {
		if (!ouverte) {
			try {
				this.wait();
			} catch (final InterruptedException ex) {
				throw new RuntimeException(ex.toString());
			}
		}
	}
}
